import request from '@/utils/request'
import type {
  Plan,
  PlanDetail,
  CreatePlanRequest,
  UpdatePlanRequest,
  PlanListResponse,
  AssignPlanRequest
} from '@/types/api/plan'
import type { BaseResponse, PaginationResponse } from '@/types/common/response'

/**
 * 健身计划管理相关API
 */
export const planApi = {
  /**
   * 获取健身计划列表
   * @param params 查询参数
   */
  getPlanList(params: { page: number; pageSize: number; keyword?: string }) {
    return request.get<BaseResponse<PaginationResponse<Plan>>>('/plans', { params })
  },

  /**
   * 获取健身计划详情
   * @param id 计划ID
   */
  getPlanDetail(id: number) {
    return request.get<BaseResponse<PlanDetail>>(`/plans/${id}`)
  },

  /**
   * 创建健身计划
   * @param data 计划信息
   */
  createPlan(data: CreatePlanRequest) {
    return request.post<BaseResponse<null>>('/plans', data)
  },

  /**
   * 更新健身计划
   * @param id 计划ID
   * @param data 计划信息
   */
  updatePlan(id: number, data: UpdatePlanRequest) {
    return request.put<BaseResponse<null>>(`/plans/${id}`, data)
  },

  /**
   * 删除健身计划
   * @param id 计划ID
   */
  deletePlan(id: number) {
    return request.delete<BaseResponse<null>>(`/plans/${id}`)
  },

  /**
   * 分配计划给会员
   * @param data 分配信息
   */
  assignPlanToMember(data: AssignPlanRequest) {
    return request.post<BaseResponse<null>>('/plans/assign', data)
  }
}
